\section{Class descriptions}

  \subsection{Parser}

This set of classes will be created to use efficiency the SAX parser.

\begin{itemize}
  \item Controller : Receive all created object from parsing and add it to the World class. 
  \item Parsing : interface, describe a unique method "readParsingResult" to give back the newly created object from parsing to the parent class. Controller is the last called.
  \item Parser : prepare the xml parser.
  \item XMLParser : initialize SAX parser.
  \item SaxAnalysis : Sax Handler, analyse each markup sended by SAX and call the right SaxMarkupAnalysis class.
  \item SaxMarkypAnalysis : interface which describe a markup analyser
  \item *Analysis : one class for each markup, implementing SaxMarkupAnalysis. These classes create an object using given markup attributes.
\end{itemize}

  \subsection{World Objects}

\begin{itemize}
  \item Vector : 3D Vector (cartesian coordinates)
  \item WorldObject : abstract class use to describe a general object, this class is able to translate the center of the object. The intersect method return the point where a Ray inter
  \item RotableObject : abstract class, handle the possible rotation of object (derive from WorldObject).
  \item World : set of World Object with camera and ambient light and all other lights.
  \item AmbientLight : describe the ambient light, with RGB color.
  \item Light : derive from AmbientLight, these lights have a position.
  \item Sphere : describe a sphere by its center and its radius
  \item Cube : describe a cube by its position and its size
  \item Cylinder : describe a cylinder by its center, its radius and its height
  \item Camera : Position of the camera and it's direction. Create the Viewport for the future rendering

\end{itemize}

  \subsection{Engine}

The class Engine will use the World to render an image.

\begin{itemize}
  \item Intersection : describe an intersection between a Ray and a WorldObject with the distance from the origin of the ray and the position of the intersection, the normal to the surface and the WorldObject involved in this intersection.
  \item Ray : a ray which will be traced. Have an origin and a direction. The trace method will try to intersect with all the WorldObjects and return the closest intersection to the origin.
  \item Viewport : a 2D plan in front of the camera which represent the image. It contains a set of method to create the image. It can also create a dynamic visualisation of the current creation of the image.
  \item Renderer : The main algorithm of the Ray Tracer. It will cast a ray for each pixel of the Viewport and calculate the color of each pixel.
\end{itemize}

